4.6 Shell Commands
The symbol
‘%’ is used in
Ex shell commands to mean current file. If you want a
‘%’ in your
command, it must be escaped as ‘\%’. However
if ‘%’ is the
first character, it stands as the address for the whole file.
Similarly,
‘#’ expands to
the previous file. The previous file is the first file in
:args listing. This defaults to the previous file in
the VI sense if you have one window.
Symbols ‘%’
and ‘#’ are
also used in the Ex commands :e and :r
<shell-cmd>. The commands :w and the
regular :r <file> command don't support these
meta symbols, because file history is a better mechanism.
- :sh
- Execute a subshell in another window
- :[x,y]!<cmd>
- Execute a shell <cmd> [on lines x through y; % is
replace by current file, \% is changed to %
- :[x,y]!! [<args>]
- Repeat last shell command [and append
<args>].
- :!<cmd>
- Just execute command and display result in a
buffer.
- :!! <args>
- Repeat last shell command and append
<args>
- <count> !<move><cmd>
- The shell executes <cmd>, with standard input the
lines described by <count><move>, next the standard
output replaces those lines (think of ‘cb’, ‘sort’, ‘nroff’, etc.).
- <count> !!<cmd>
- Give <count> lines as standard input to the shell
<cmd>, next let the standard output replace those
lines.
- :[x,y] w !<cmd>
- Let lines x to y be standard input for <cmd> (notice
the <sp> between w and
!).
- :<address>r !<cmd>
- Put the output of <cmd> after the line
<address> (default current).
- :<address>r <name>
- Read the file <name> into the buffer after the line
<address> (default current).
- :make
- Run the make command in the current directory.